<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>HTTP | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'modules-http.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/modules-http.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/modules-http.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/modules-http.html" rel="nofollow" target="_blank">../en/modules-http.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">安装和设置</a></span>
»
<span class="breadcrumb-link"><a href="settings.html">配置 Elasticsearch</a></span>
»
<span class="breadcrumb-node">HTTP</span>
</div>
<div class="navheader">
<span class="prev">
<a href="modules-fielddata.html">« 字段数据缓存设置</a>
</span>
<span class="next">
<a href="ilm-settings.html">索引生命周期管理设置 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="modules-http"></a>HTTP
</h2>
</div></div></div>
<p>HTTP层通过HTTP公开 Elasticsearch 的 REST API。</p>
<p>
HTTP机制本质上是完全异步的，这意味着不存在等待响应的阻塞线程。
对 HTTP 使用异步通信的好处是解决了 <a href="http://en.wikipedia.org/wiki/C10k_problem" class="ulink" target="_top">C10k problem</a> 问题（ <a href="https://blog.csdn.net/chinawangfei/article/details/102780959" rel="nofollow">国内打不开点这里<a/>）。
</p>
<p>
如果可以，考虑在连接时使用 <a href="http://en.wikipedia.org/wiki/Keepalive#HTTP_Keepalive" class="ulink" target="_top">HTTP keep alive</a> 以获得更好的性能，并尝试让你最喜欢的客户端不要进行 <a href="http://en.wikipedia.org/wiki/Chunked_transfer_encoding" class="ulink" target="_top">HTTP 分块</a>。
</p>
<div class="http-settings">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_http_settings"></a>HTTP 设置
</h3>
</div></div></div>
<p>
下表中的设置可以对 HTTP 进行配置。
注意，它们都不能动态更新，要让它们生效，应该在 Elasticsearch 的 <a class="xref" href="settings.html" title="Configuring Elasticsearch">配置文件 </a>中设置。
</p>
<div class="informaltable">
<table border="1" cellpadding="4px">
<colgroup>
<col class="col_1">
<col class="col_2">
</colgroup>
<thead>
<tr>
<th align="left" valign="top">Setting</th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p><code class="literal">http.port</code></p></td>
<td align="left" valign="top"><p>绑定端口范围。默认为 <code class="literal">9200-9300</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.publish_port</code></p></td>
<td align="left" valign="top"><p>HTTP客户端在与此节点通信时应使用的端口。
当集群的节点位于代理或防火墙之后，并且 <code class="literal">http.port</code> 不能从外部直接寻址时，此功能非常有用。默认为通过<code class="literal">http.port</code>分配的实际端口。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.bind_host</code></p></td>
<td align="left" valign="top"><p>HTTP 服务要绑定到的主机地址。默认为 <code class="literal">http.host</code> (如果设置了) 或者 <code class="literal">network.bind_host</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.publish_host</code></p></td>
<td align="left" valign="top"><p>要发布供 HTTP 客户端连接的主机地址。默认为 <code class="literal">http.host</code> (如果设置了) 或者 <code class="literal">network.publish_host</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.host</code></p></td>
<td align="left" valign="top"><p>用于设置 <code class="literal">http.bind_host</code> 和 <code class="literal">http.publish_host</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.max_content_length</code></p></td>
<td align="left" valign="top"><p>HTTP 请求的最大内容。默认为 <code class="literal">100mb</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.max_initial_line_length</code></p></td>
<td align="left" valign="top"><p>HTTP URL 的最大长度。默认为 <code class="literal">4kb</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.max_header_size</code></p></td>
<td align="left" valign="top"><p>允许的 header 大小的最大值。默认为 <code class="literal">8kB</code></p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.compression</code></p></td>
<td align="left" valign="top">
<p>如果可以就支持压缩 (使用 Accept-Encoding)。如果开启了 HTTPS，默认为 <code class="literal">false</code>。否则，默认为 <code class="literal">true</code>。</p>
<p>
对 HTTPS 禁用压缩可以降低潜在的安全风险，如 <a href="https://en.wikipedia.org/wiki/BREACH" class="ulink" target="_top">BREACH 攻击</a>。要压缩 HTTPS 流量，必须将 <code class="literal">http.compression</code> 设置为 <code class="literal">true</code>。</p>
</td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.compression_level</code></p></td>
<td align="left" valign="top"><p>定义用于 HTTP 响应的压缩级别。有效值的范围为 1（最小压缩） 到 9 （最大压缩）。默认为 <code class="literal">3</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.enabled</code></p></td>
<td align="left" valign="top"><p>
启用或禁用 跨域(cross-origin) 资源共享，即在浏览器上另一个源是否可以对 Elasticsearch 执行请求。

设置为 <code class="literal">true</code> 以使 Elasticsearch 能够处理 预检的(pre-flight) <a href="https://en.wikipedia.org/wiki/Cross-origin_resource_sharing" class="ulink" target="_top">CORS</a> 请求。

如果 <code class="literal">http.cors.allow-origin</code> 列表允许请求中发送的 <code class="literal">Origin(域)</code>，Elasticsearch 将使用 <code class="literal">Access-Control-Allow-Origin</code> 头响应这些请求。

设置为 <code class="literal">false</code> (默认)，Elasticsearch 会忽略  <code class="literal">Origin</code> 请求头，能有效的禁用 CORS 请求，因为 Elasticsearch 永远不会使用 <code class="literal">Access-Control-Allow-Origin</code> 响应头进行响应。

注意，如果客户端没有发送带有 <code class="literal">Origin</code> 头的 预检的(pre-flight) 请求，或者没有检查来自服务器的响应头以验证<code class="literal">Access-Control-Allow-Origin</code> 响应头，则 跨域(cross-origin) 安全性会受到损害。

如果 Elasticsearch 上没有启用 CORS，那么客户端知道的唯一方法是发送一个 预检的(pre-flight) 请求，并意识到所需的响应头丢失了。
</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.allow-origin</code></p></td>
<td align="left" valign="top"><p>
允许的域(源, origin)。默认不允许任何域。
如果在该值前添加 <code class="literal">/</code>，它将被视为正则表达式，允许支持 HTTP 和 HTTPS。
例如使用<code class="literal">/https?:\/\/localhost(:[0-9]+)?/</code> 在这两种情况下<span class="remark">(即http和https)</span>都会适当地返回请求头。
<code class="literal">*</code> 是一个有效的值，但被认为是一个<span class="strong strong"><strong>安全风险</strong></span>，因为 Elasticsearch 实例对来自<span class="strong strong"><strong>任何地方</strong></span>的跨域请求都开放。
</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.max-age</code></p></td>
<td align="left" valign="top"><p>
浏览器发送带 “预检(preflight)” 选项的请求来确定 CORS 设置。
<code class="literal">max-age</code> 定义了结果要缓存的时间。默认为 <code class="literal">1728000</code> (20 天)。
</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.allow-methods</code></p></td>
<td align="left" valign="top"><p>允许哪些方法。默认为 <code class="literal">OPTIONS, HEAD, GET, POST, PUT, DELETE</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.allow-headers</code></p></td>
<td align="left" valign="top"><p>允许那些 header 。默认为 <code class="literal">X-Requested-With, Content-Type, Content-Length</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.cors.allow-credentials</code></p></td>
<td align="left" valign="top"><p>是否要返回 <code class="literal">Access-Control-Allow-Credentials</code> 头。注意：仅当设置为 <code class="literal">true</code> 时才会返回这个值。默认为 <code class="literal">false</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.detailed_errors.enabled</code></p></td>
<td align="left" valign="top"><p>
启用或禁用响应中详细错误消息和堆栈跟踪的输出。
注意：当设置为 <code class="literal">false</code> 且指定了 <code class="literal">error_trace</code> 请求参数时，会返回错误；如果未指定 <code class="literal">error_trace</code>，则只返回一个简单的信息。默认为 <code class="literal">true</code>。
</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.pipelining.max_events</code></p></td>
<td align="left" valign="top"><p>关闭 HTTP 连接之前，要在内存中排队的最大事件数，默认为 <code class="literal">10000</code>。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.max_warning_header_count</code></p></td>
<td align="left" valign="top"><p>客户端 HTTP 响应中警告头的最大数量，默认为 不限制。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">http.max_warning_header_size</code></p></td>
<td align="left" valign="top"><p>客户端 HTTP 响应中警告头的最大总大小，默认为 不限制。</p></td>
</tr>
</tbody>
</table>
</div>
<p>它还使用通用的 <a class="xref" href="modules-network.html" title="Network settings">网络设置</a>。</p>
</div>

<div class="http-rest-request-tracer">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_rest_request_tracer"></a>REST 请求跟踪器
</h3>
</div></div></div>
<p>HTTP层有一个专用的跟踪记录器，当它被激活时，记录传入的请求。
通过将 <code class="literal">org.elasticsearch.http.HttpTracer</code>日志的级别设置为 <code class="literal">TRACE</code> ，可以动态激活日志:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _cluster/settings
{
   "transient" : {
      "logger.org.elasticsearch.http.HttpTracer" : "TRACE"
   }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/25.console"></div>
<p>您还可以使用一组包含和排除通配符模式来控制将跟踪哪些 uri。默认情况下，每个请求都会被跟踪。</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _cluster/settings
{
   "transient" : {
      "http.tracer.include" : "*",
      "http.tracer.exclude" : ""
   }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/26.console"></div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="modules-fielddata.html">« 字段数据缓存设置</a>
</span>
<span class="next">
<a href="ilm-settings.html">索引生命周期管理设置 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>